package com.fivefu.core.skyeye.event.services;

import com.alibaba.fastjson.JSONArray;
import com.fivefu.core.skyeye.event.vo.*;

import java.util.List;

public interface MimirEventService {

    /**
     * 查询事件信息(违停)
     * @param code 探头唯一标识
     */
    List<EventBean> queryMimirEventByMimirID(String code);

    /**
     * 查询通用事件信息
     * @param code 探头唯一标识
     * @return
     */
    List<EventBean> queryCvMimirEventByMimirID(String code);

    /**
     * 查询视频播放流
     * @return
     */
    List<StreamDataBean> queryCameraStream();

    /**
     * 查询视频播放流
     * @param code
     * @return
     */
    StreamDataBean queryCameraStream(String code);

    /**
     * 编辑视频流地址
     * @param type 操作类型(add,modify)
     * @param code 探头编号
     * @param url  流地址
     * @param used 是否启用
     */
    void editCameraStream(String type, String code,String url,Integer used);

    /**
     * 查询视频切片信息
     * @return
     */
    List<StreamSliceBean> queryCameraStreamSlice();

    /**
     * 查询视频切片信息
     * @param code
     * @return
     */
    StreamSliceBean queryCameraStreamSlice(String code);

    /**
     * 编辑视频流切片信息
     * @param type 操作类型(add,modify)
     * @param code 探头唯一标识
     * @param node 节点
     * @param slicesTime 切片次数
     */
    void editCameraStreamSlice(String type, String code, String node, Integer slicesTime);

    /**
     * 编辑视频流切片信息
     * @param type 操作类型(add,modify)
     * @param enable 是否启用(0:否 1:是)
     * @param code 探头唯一标识
     * @param discernmentBean 场景探头相关信息
     */
    void editCameraStreamSlice(String type, String code,Integer enable,DiscernmentBean discernmentBean);

    /**
     * 查询视频切片信息
     * @return
     */
    List<IllegalCameraBean> queryIllegalCameraStream(Integer cvId);
    /**
     * 查询违停视频流信息
     * @param code
     * @return
     */
    IllegalCameraBean queryIllegalCameraStream(String code, Integer cvId);

    /**
     * 编辑违停识别配置
     * @param type 操作类型(add,modify)
     * @param code 探头唯一标识
     * @param cvId 场景类型
     * @param used 是否启用
     * @param eventNode 识别节点
     * @param timeDuration 时长
     * @param pts 区域范围
     * @param cameraValidTime 探头有效时间
     */

    void editIllegalCameraStream(String type, String code, Integer cvId, Integer used, String eventNode, Integer timeDuration, JSONArray pts, JSONArray cameraValidTime);

    /**
     * 编辑违停识别配置
     * @param type 操作类型(add,modify)
     * @param code 探头唯一标识
     * @param cvId 场景类型
     * @param used 是否启用(0:否 1:是)
     * @param discernmentBean
     */
    void editIllegalCameraStream(String type, String code, Integer cvId, Integer used,DiscernmentBean discernmentBean);

    /**
     * 格式化画线信息
     * @param area
     * @return
     */
    List<List<Integer[]>> formatPoints(String area);

    /**
     * 查询场景信息
     * @return
     */
    List<SceneDataBean> queryScene();

    /**
     * 查询场景信息
     * @param code 场景编号
     * @return
     */
    List<SceneDataBean> queryScene(String code);

    SceneDataBean queryScene(Integer id);

    SceneDataBean queryScene(String code,Integer cvId);

    /**
     * 编辑场景识别
     * @param type 操作类型(add,modify)
     * @param code 探头唯一标识
     * @param cvId 场景类型
     * @param used 是否启用(0:否 1:是)
     * @param eventNode 识别节点
     * @param timeDuration 时长
     * @param pts 区域范围
     * @param cameraValidTime 探头有效时间
     * @param cvParam 识别参数
     */
    void editScene(String type,String code, Integer cvId, Integer used,String eventNode, Integer timeDuration, JSONArray pts, JSONArray cameraValidTime,String cvParam);

    /**
     * 编辑场景识别
     * @param type 操作类型(add,modify)
     * @param code 探头唯一标识
     * @param cvId 场景类型
     * @param used 是否启用(0:否 1:是)
     * @param discernmentBean 场景探头相关信息
     */
    void editScene(String type,String code, Integer cvId, Integer used,DiscernmentBean discernmentBean);

    /**
     * 视频切片日志数据查询
     * @param uniqueCode   探头唯一编码
     * @param stime 开始时间(yyyyMMddHHmmss)
     * @param etime 结束时间(yyyyMMddHHmmss)
     * @param pageNo 页码
     * @param pageSize 数量
     * @return
     */
    List<VideoCaptureBean> queryVideoCapture(String uniqueCode, String stime, String etime, Integer pageNo, Integer pageSize);

    /**
     * 视频切片数据查询    视频截图信息查询
     * @param uniqueCode   探头唯一编码
     * @param stime 开始时间(yyyyMMddHHmmss)
     * @param etime 结束时间(yyyyMMddHHmmss)
     * @param pageNo 页码
     * @param pageSize 数量
     * @return
     */
    List<StreamSlicesDataBean> getStreamSlicesData(String uniqueCode, String stime, String etime, Integer pageNo, Integer pageSize);
}
